home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 November
/
EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso
/
earcd
/
gfx
/
vtdevel3.lha
/
SourceAGA
/
Landscape.s
< prev
next >
Wrap
Text File
|
1994-06-18
|
53KB
|
2,495 lines
;Landscape
rout ;when this is off, the routine-file will be
;assembled, on=testing
;debug ;when this is on, colors in the background will
;show how much time the routine needs.
;ntsctest ;when this is on, the routineplayer is in ntsc-mode
;ocs ;off=AGA,on=OCS testing not possible on OCS !
routinemode equ 48;64+16 ;the routinemode !
; VideoTracker AGA developer source 25-12-93
; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
; wich makes low-resolution overscan a bit ugly.
; no "interactive" support anymore, it's only used by Kick 1.3 users.
; the first part of the source handles the things that are necessary to
; show the picture/copper and playing of the routine.
; the part between the "***" lines is the routine-source.
; at the bottom of the file, there are the necessary incbin-files who
; are needed to test the routine.
; these are saved with "save effect" in videotracker. they are raw
; data files which can be fonts,pictures,landscapes,vectorobjects
; etcetra.
; the incbin-files are put in the "variables" table, in the routine
; player-handler
; the place where it's done can be found by searching for "!!!"
opt a+ ;devpac 3 optimize
opt o+
vew_wid equ 48
vew_hgt equ 290
win_hgt equ 117
win_str equ $1a
ifd ocs
pic_wid equ 4 ;wide in bytes
pic_hgt equ 6 ;hoogte
pic_dpt equ 8 ;number planes
pic_ani equ 10 ;aantal effes (anim)
pic_vew equ 12 ;viewmode
pic_cycstr equ 14 ;cycle start (*4)
pic_cycend equ 15 ;cycle end (*4)
pic_cycspd equ 16 ;cycle speed (*4)
pic_cycadd equ 17 ;cycle add (*4)
pic_palnum equ 30 ;aantal kleuren
pic_pal equ 32 ;palette start
pic_palsiz equ 256*2 ;vaste palette size
pic_raw equ pic_pal+pic_palsiz ;palette start
endc
ifnd ocs
pic_wid equ 4 ;wide in bytes
pic_hgt equ 6 ;hoogte
pic_dpt equ 8 ;number planes
pic_ani equ 10 ;aantal effes (anim)
pic_vew equ 12 ;viewmode
pic_cycstr equ 14 ;cycle start (*8)
pic_cycend equ 15 ;cycle end (*8)
pic_cycspd equ 16 ;cycle speed (*8)
pic_cycadd equ 17 ;cycle add (*8)
pic_widmod equ 46 ;animation-width modulo
pic_future equ 50 ;free future space
pic_palnum equ 62 ;aantal kleuren
pic_pal equ 64 ;palette start
pic_palsiz equ 256*4 ;vaste palette size (longwords)
pic_raw equ pic_pal+pic_palsiz ;palette start
endc
fon_hgt equ 4 ;font hoogte
fon_wid equ 8 ;plane breedte in bytes
fon_dpt equ 12 ;depth
fon_chrf equ 16 ;eerste character
fon_chrl equ 20 ;laatste character
fon_widtab equ 24 ;font breedte per char
fon_rawpos equ 256*2+fon_widtab ;start raw char position
fon_raw equ 256*4+fon_rawpos ;start raw planes
lnd_sizx equ $4 ;size x
lnd_sizy equ $8 ;size y
lnd_palnum equ $10 ;aantal kleuren -1
lnd_pal equ $12 ;palette
lnd_wrl equ 256*2+lnd_pal ;worlddata
var_len equ $300 ;lengte vartabel
var__GfxBase equ $000 ;graphics lib
var_pic1 equ $004 ;current picture
var_anispd1 equ $008 ;animspeed
var_anitel1 equ $00c ;animcount
var_cprbck equ $010 ;copperback
var_bck equ $014 ;background
var_pic2 equ $018 ;current picture
var_ntsc equ $01c ;ntsc/pal frequence
var_lnd equ $020 ;landscape
var_anilop1 equ $024
var_rottrg equ $028 ;effect trigger
var_txt1 equ $040 ;text
var_txt16 equ 15*4+var_txt1
var_vec1 equ $080 ;vectors
var_vec16 equ 15*4+var_vec1
var_fon1 equ $0c0 ;fonts
var_fon16 equ 15*4+var_fon1
var_cols1 equ $100 ;colorsets
var_cols16 equ 15*4+var_cols1
var_obj1 equ $180 ;objects
var_obj16 equ 15*4+var_obj1
ifd rout
;videotracker routine-test
incdir "w:include/"
include "exec/types.i"
include "graphics/gfxbase.i"
include "lvo/graphics_lib.i"
incdir 'videotracker:effect/'
SECTION 1,CODE_C
tus
lea var,a0
; move.l #rotincfon,var_fon1(a0) ;incbinfile !!!
; move.l #rotincfon,4+var_fon1(a0) ;incbinfile !!!
; move.l #rotinctxt,var_txt1(a0) ;incbinfile !!!
; move.l #rotincobj,var_obj1(a0) ;incbinfile !!!
; move.l #rotincbck,var_bck(a0) ;incbinfile !!!
; move.l #rottube,var_vec1(a0) ;incbinfile !!!
; move.l #rotsrc,curpic1 ;picture !!!
; move.l #rotsrc,curpal1 ;palette !!!
; move.l #rotset,var_cols1(a0) ;colorset !!!
bsr paltabres
move.l ($4).w,a6
sub.l a1,a1
jsr -$126(a6) ;findtask
move.l d0,curtsk
move.l d0,a0
move.l $b8(a0),tskpri
lea dosnam,a1 ;doslib openen
moveq.l #0,d0
move.l (4).w,a6
jsr -408(a6) ;openlib
move.l d0,doslib
bsr.s label5 ;videotracker opstarten
move.l curtsk,a0
move.l tskpri,$b8(a0)
move.l ($4).w,a6
jsr -$84(a6) ;forbid
move.l doslib,a1
move.l (4).w,a6
jsr -414(a6) ;closelib
moveq.l #0,d0
rts
label5
move.l (4).w,a6 ;workbench gedoe
move.b 530(a6),ntscmode ;50/60 hertz halen
ifd ntsctest
move.b #60,ntscmode ;60 hertz (ntsc)
endc
cmp.b #50,ntscmode ;ntsc ?
beq.s str.ntsc
move.l #vew_hgt-56,hogscr ;set NTSC screen hight
str.ntsc
lea cprjmp,a2 ;copjmp zetten !
move.l #cprbck-8,d0
move.w d0,6(a2)
swap d0
move.w d0,2(a2)
lea cprbck-8,a2 ;copstr zetten !
move.l #cpr,d0
move.w d0,6(a2)
swap d0
move.w d0,2(a2)
bsr cprsprrem ;sprites legen
lea gfxnam,a1 ;graphics lib openen
move.l (4).w,a6
jsr -408(a6) ;openlib
move.l d0,a6
move.l d0,gfxlib
move.l 38(a6),oldcprlist
bset #1,$bfe001
bsr copbuf ;copper vullen
bsr sysoff
gadrun
btst #6,($bfe001).l
bne gadrun
scrend
scrend.play
bsr syson
move.l gfxlib,a1
move.l (4).w,a6
jsr -414(a6) ;closelib
scrend.qb
moveq.l #0,d0
rts
;vertical blank interrupt, no blits.
;handles counters,interlace,sprite
;level 3
intvb
bra.s intvb.cnt
dc.l 'VIDU'
dc.l 'LOOP'
intvb.cnt
movem.l d0-d7/a0-a6,-(sp)
lea ($dff000).l,a6
move.w $01e(a6),d0
btst #5,d0 ;vblank ?
bne.s intvb.vb
bra.s intcop.end
intvb.vb
bsr grap
bsr palctr ;palette zetten
bsr.s copbuf ;copper vullen
intvb.end
move.w #$0020,$09c(a6) ;vb bit wissen
movem.l (sp)+,d0-d7/a0-a6 ;multitask uit, shit !
rte
intcop.end
movem.l (sp)+,d0-d7/a0-a6
move.l intvbold,-(sp)
rts
;transmission buffer empty routine, BLIT !
;handles routines,animations
inttbe ;tbe interrupt
movem.l d0-d7/a0-a6,-(sp)
lea ($dff000).l,a6
move.w $01e(a6),d0
btst #0,d0 ;no tbe ?
beq.s intdskblk
btst #6,($bfe001).l ;muis ingedrukt ?
beq.s inttbe.cop
btst #2,($dff016).l
beq.s inttbe.cop
ifd debug
move.w #$700,$dff180
endc
bsr rotply ;routineplayer BLIT !
bsr.s copbuf ;copper vullen
ifd debug
move.w #$070,$dff180
endc
inttbe.cop
inttbe.end
move.w #$0001,$09c(a6)
movem.l (sp)+,d0-d7/a0-a6
rte
intdskblk
move.w #$0001,$09c(a6) ;be sure for no tbe handling
movem.l (sp)+,d0-d7/a0-a6
move.l inttbeold,-(sp)
rts
;moves the copperbuffer to the copperlist
;sort of double buffering
copbuf
movem.l d0-d7/a0-a6,-(sp)
lea ($dff000).l,a6
copbuf.novb ;copperchange overslaan
moveq.l #0,d0
move.b $005(a6),d0
lsl.w #8,d0
moveq.l #0,d1
move.b $006(a6),d1
add.w d1,d0
cmp.w #$4,d0 ;lower limit, all stations 100%
blt copbuf.novb
cmp.b #50,ntscmode
beq.s copbuf.pal
cmp.w #$133-72-8,d0 ;ntsc grens
bge copbuf.novb
bra.s copbuf.cont
copbuf.pal
cmp.w #$133-8,d0 ;pal grens
bge copbuf.novb
copbuf.cont
lea gra.s,a0 ;buffer copieren
lea cprbuf,a1
copbuf_aga ;AGA stuff :)
move.l #(gra.ql)/4-1,d0
copbuf.a
move.w 2(a0),2(a1)
add.l #4,a0
add.l #4,a1
dbra d0,copbuf.a
copbuf.end
movem.l (sp)+,d0-d7/a0-a6
rts
;goes back to the workbench
syson
movem.l d0-d7/a0-a6,-(sp)
move.w #$0001,$dff09a ;tbeint uit
move.l intvbold,($6c).w
move.l inttbeold,($64).w
move.l 4,a6
jsr -138(a6) ;permit
move.l gfxlib,a6
jsr -462(a6) ;disownblitter
move.l wbview,a1
move.l gfxlib,a6
jsr _LVOLoadView(a6) ; Fix view
jsr _LVOWaitTOF(a6)
jsr _LVOWaitTOF(a6) ; wait for LoadView()
syson.ras
cmp.b #$c0,$dff006 ;prevent copperjump
bne syson.ras
move.l gfxlib,a6
move.l gb_copinit(a6),$dff080 ; Kick it into life
movem.l (sp)+,d0-d7/a0-a6
rts
;goes back to the gadgetscreen
sysoff
movem.l d0-d7/a0-a6,-(sp)
move.l gfxlib,a6
move.l gb_ActiView(a6),wbview ;current view
sub.l a1,a1 ; clear a1
jsr _LVOLoadView(a6) ; Flush View to nothing
jsr _LVOWaitTOF(a6) ; Wait once
jsr _LVOWaitTOF(a6) ; Wait again.
move.l gfxlib,a6
jsr -456(a6) ;ownblitter
move.l 4,a6
jsr -132(a6) ;forbid
move.l ($6c).w,intvbold
move.l #intvb,($6c).w
move.l ($64).w,inttbeold
move.l #inttbe,($64).w
move.w #$8001,$dff09a ;tbeint aan
bsr gracpr ;reset copper
bsr copbuf ;copy copper
move.l #cpr,$dff080
movem.l (sp)+,d0-d7/a0-a6
rts
cprsprrem
movem.l d0-d7/a0-a6,-(sp)
lea cprspr,a0
move.l #sprdat,d0
move.w #7,d1
cprsprrem.a
move.w d0,3*2(a0)
swap d0
move.w d0,1*2(a0)
swap d0
add.l #8,a0
dbra d1,cprsprrem.a
movem.l (sp)+,d0-d7/a0-a6
rts
varset ;variablen neerzetten
movem.l d0-d7/a0-a6,-(sp)
move.l #var,a0
move.l #cprbck,var_cprbck(a0)
move.l gfxlib,var__GfxBase(a0)
move.b ntscmode,var_ntsc(a0)
move.l curpic1,var_pic1(a0) ;variabel
move.l curpic2,var_pic2(a0) ;variabel
move.w anispd1,var_anispd1(a0)
move.w anitel1,var_anitel1(a0)
move.b anilop1,var_anilop1(a0)
move.l #rottrg,var_rottrg(a0)
movem.l (sp)+,d0-d7/a0-a6
rts
;this routine handles all videotracker-routines
rotply
movem.l d0-d7/a0-a6,-(sp)
moveq.l #0,d0
lea currot1,a2 ;routine 1
move.w rotinf1,d0 ;routine info
bsr.s rotplyr
rotply.end
movem.l (sp)+,d0-d7/a0-a6
rts
;this routine handles 1 routine, BLIT !
rotplyr
movem.l d0-d7/a1-a6,-(sp)
move.l #rot,(a2) ;routinestart address
; move.b #50,ntscmode ;ntsc/pal hz
clr.l curpic2 ;background picture
move.w #1,anispd1 ;animationspeed
clr.w anitel1 ;animation position
lea var,a0 ;communication-table
move.l #rotinc,var_lnd(a0) ;incbinfile !!!
; move.l #rotinc,var_cols1(a0) ;incbinfile !!!!!!!!!
move.b #0,anilop1 ;animloop off/on !!!
move.w #32,anispd1 ;animdelay !!!
move.l #routinemode,d0 ;routinemode !!!
sub.l a0,a0 ;picture info legen
tst.l (a2) ;is er een routine ?
beq rotplyr.end ;interlace handling
move.l intdel,d2 ;delay
move.l inttel,d1 ;teller
cmp.w d2,d1
blt rotplyr.end
clr.l inttel
bsr varset ;variabelen updaten
move.l (a2),a1 ;routine halen
move.l #var,a0 ;variablen tabel
movem.l d3-d7/a1-a6,-(sp)
moveq.l #0,d1 ;vars wissen
moveq.l #0,d2
moveq.l #0,d3
moveq.l #0,d4
moveq.l #0,d5
moveq.l #0,d6
moveq.l #0,d7
sub.l a2,a2
sub.l a3,a3
sub.l a4,a4
sub.l a5,a5
jsr 4(a1) ;routine afwerken
movem.l (sp)+,d3-d7/a1-a6
;Routine:
;
;Input:
;a0=variabelentabel
;d0=routinemode
;
;Output:
;a0=picture
;d1=copperlist
;d2=interruptdelay (NOT used till now)
move.w #$0020,$dff09a ;vb off !
move.l d2,intdel ;delay
lea cprjmp,a3
move.l #cprbck-8,d0
cmp.l (a2),a1 ;routine ondertussen gewipt ?
bne.s rotplyr.nocop
tst.l d1 ;copperlist ?
beq.s rotplyr.nocop
move.l d1,d0
rotplyr.nocop
move.w d0,6(a3)
swap d0
move.w d0,2(a3)
cmp.l #0,a0 ;picture ?
beq.s rotplyr.endvb
move.l a0,curpic1 ;current picture (cycle)
move.l a0,curpal1 ;current palette
tst.b rotdpl ;plane is geleverd
beq.s rotplyr.set
clr.b rotdpl
clr.l cycdel1 ;cycle info wissen
clr.l 4+cycdel1
clr.l curfrm1 ;curfrm1, altijd planes zetten
rotplyr.set
clr.b dplctr
bsr.s grap
bsr grac ;colorset
rotplyr.endvb
move.w #$8020,$dff09a
rotplyr.end
movem.l (sp)+,d0-d7/a1-a6
rts
;removes possible routine-coppers
gracpr
movem.l d0-d7/a0-a6,-(sp)
lea cprjmp,a3
move.l #cprbck-8,d0 ;copperlist resetten
move.w d0,6(a3)
swap d0
move.w d0,2(a3)
movem.l (sp)+,d0-d7/a0-a6
rts
grap ;d7=anim
movem.l d0-d7/a0-a6,-(sp)
clr.l d7
tst.l curpic1 ;current picture ?
beq grap.end
move.l curpic1,a2 ;normal pic halen
lea gracprscr,a1 ;window neerzetten
move.l hogscr,d1
move.w pic_hgt(a2),d3 ;pic hoogte
move.w pic_vew(a2),d5
btst #2,d5 ;interlace ?
beq.s grap.nohi4
lsr.w #1,d3 ;/2
grap.nohi4
cmp.w d3,d1
bge.s grap.hog
move.w d1,d3
grap.hog
sub.w d3,d1
lsr.w #1,d1
add.w #win_str,d1
move.w d1,d2
add.w d3,d2
move.b d1,2(a1) ;y start
move.b d2,6(a1) ;y end
move.w pic_wid(a2),d4 ;pic breedte in bytes
lsl.l #3,d4
move.l #vew_wid*8,d0
move.l #0,d1
move.l #$61,d6
cmp.w #40,pic_wid(a2) ;overscan ?
ble.s grap.noov1
move.l #$41,d6
grap.noov1
move.w pic_vew(a2),d5
btst #15,d5 ;hires ?
beq.s grap.nohi2
move.l #(vew_wid)*8*2,d0
move.l #1,d1
move.l #$61,d6
cmp.w #80,pic_wid(a2) ;overscan ?
ble.s grap.nohi2
move.l #(vew_wid)*8*2,d0
move.l #$51,d6
bra.s grap.noshi2
grap.nohi2
btst #6,d5 ;super hires ?
beq.s grap.noshi2
move.l #(vew_wid)*8*4,d0
move.l #2,d1
move.l #$61,d6
cmp.w #80*2,pic_wid(a2) ;overscan ?
ble.s grap.noshi2
move.l #(vew_wid)*8*4,d0
move.l #$51,d6
grap.noshi2
clr.w d5
cmp.w d0,d4 ;breeder dan scherm ?
ble.s grap.c
move.w d4,d5
move.w d0,d4
sub.w d0,d5 ;modulo
lsr.w #3,d5 ;/8
grap.c
lsr.w d1,d0
lsr.w d1,d4
move.w d0,d2
sub.w d4,d2
lsr.w #1,d2 ;/2
add.w d6,d2
move.b d2,3(a1) ;x start
move.w d2,d3 ;d3 bewaren !
add.w d4,d2 ;d4 bewaren !
move.b d2,7(a1) ;x end
move.w pic_vew(a2),d6
btst #15,d6 ;hires ?
beq.s grap.nohi5
add.l d4,d4 ;*2
bra.s grap.noshi5
grap.nohi5
btst #6,d6 ;super hires ?
beq.s grap.noshi5
add.l d4,d4 ;*4
add.l d4,d4
grap.noshi5
move.l d7,-(sp)
move.w pic_vew(a2),d6
move.l #17,d0
move.l #4,d1 ;ecs 1
move.l #3,d7
btst #15,d6 ;hires ?
beq.s grap.nohi3
move.l #17,d0 ;ecs 9
move.l #4,d1 ;ecs 2
move.l #2,d7
bra.s grap.noshi3
grap.nohi3
btst #6,d6 ;super hires ?
beq.s grap.noshi3
move.l #17,d0 ;ecs 9
move.l #4,d1 ;ecs 2
move.l #1,d7
grap.noshi3
sub.w d0,d3
lsr.w #1,d3
move.w d3,10(a1) ;ddfstrt
move.w d4,d2 ;pic breedte in pixels
lsr.w #4,d2 ;/16
sub.w d1,d2 ;-1
lsl.w d7,d2 ;*8
add.w d2,d3
move.w d3,14(a1) ;ddfstop
move.l (sp)+,d7
lea pic_raw(a2),a0
moveq.l #0,d2
move.w pic_dpt(a2),d2
sub.l #1,d2
muls pic_wid(a2),d2
add.w d2,d5
move.w pic_vew(a2),d2 ;viewmode add
btst #2,d2
beq.s grap.nolace4
moveq.l #0,d2
move.w pic_dpt(a2),d2
muls pic_wid(a2),d2
add.w d2,d5 ;interlace gedoe
grap.nolace4
lea gracprbpl,a4 ;iffpln neerzetten
lea gracprpln,a0 ;iffpln neerzetten
moveq.l #0,d2
move.w pic_dpt(a2),d2 ;plnnummer 1 halen
move.l #8,d6 ;copper step !
tst.l curpic2 ;2de picture ?
bne.s grap.pic2
grap.nopic2
move.w d5,34(a1) ;modulo oneven zetten
bra grap.nodpl
grap.pic2
move.l curpic2,a3 ;oneven plane
move.l curpic2+4,a6 ;oneven plane
move.l currot2,a5 ;oneven plane
clr.l curpic2 ;mischien niet goed
clr.l curpic2+4 ;mischien niet goed
clr.l curpal2 ;mischien niet goed
clr.l currot2 ;mischien niet goed
cmp.l curpic1,a3 ;picture hetzelfde ?
beq.s grap.nopic2
cmp.l #0,currot1 ;routine ?
beq.s grap.norot
cmp.l currot1,a5 ;routine hetzelfde ?
beq.s grap.nopic2
grap.norot
cmp.b #4,d2 ;> 16 kleuren ? (AGA)
bgt grap.nopic2
move.w pic_dpt(a3),d3 ;plnnummer 2 halen
cmp.b d2,d3 ;gelijke plnummers ?
bne.s grap.nopic2
move.w pic_vew(a2),d1
cmp.w pic_vew(a3),d1 ;view gelijk ?
bne.s grap.nopic2
move.w pic_vew(a2),d1 ;groter dan view test
btst #6,d1 ;super hires ?
beq.s grap.nohi2a
move.l #vew_wid*4,d1
bra.s grap.nohi2b
grap.nohi2a
btst #15,d1 ;hires ?
beq.s grap.noshi2a
move.l #vew_wid*2,d1
bra.s grap.nohi2b
grap.noshi2a
move.l #vew_wid,d1
grap.nohi2b
cmp.w pic_wid(a2),d1 ;breder dan view ?
bgt.s grap.small
cmp.w pic_wid(a3),d1 ;breder dan view ?
bgt.s grap.small
move.w pic_vew(a2),d1
btst #2,d1
beq.s grap.nolace8a
move.l hogscr,d1
add.l d1,d1
bra.s grap.nolace8b
grap.nolace8a
move.l hogscr,d1
grap.nolace8b
cmp.w pic_hgt(a2),d1 ;hoger dan view ?
bgt.s grap.small
cmp.w pic_hgt(a3),d1 ;hoger dan view ?
bgt.s grap.small
bra.s grap.big
grap.small
move.w pic_hgt(a2),d1 ;wid+hgt<vew
cmp.w pic_hgt(a3),d1 ;hoogte gelijk ?
bne grap.nopic2
move.w pic_wid(a2),d1
cmp.w pic_wid(a3),d1 ;breedte gelijk ?
bne grap.nopic2
grap.big
move.l a3,curpic2 ;toch wel goed !
move.l a6,curpic2+4
move.l a3,curpal2
move.l a5,currot2
tst.b dplctr ;dual playfield al gezet ?
beq grap.nocop
move.w 30(a1),34(a1) ;modulo copieren
move.w 2(a4),d1 ;bplcon0
btst #10,d1 ;al dual playfield ?
beq.s grap.ta
move.w 2(a0),10(a0) ;plane 0>1 copieren
move.w 6(a0),14(a0)
move.w 18(a0),26(a0) ;plane 2>3 copieren
move.w 22(a0),30(a0)
move.w 34(a0),42(a0) ;plane 4>5 copieren
move.w 38(a0),46(a0)
move.w 50(a0),58(a0) ;plane 6>7 copieren
move.w 54(a0),62(a0)
bra.s grap.tb
grap.ta
move.w 24(a0),58(a0) ;plane 3>7 copieren
move.w 28(a0),62(a0)
move.w 18(a0),42(a0) ;plane 2>5 copieren
move.w 22(a0),46(a0)
move.w 10(a0),26(a0) ;plane 1>3 copieren
move.w 14(a0),30(a0)
move.w 2(a0),10(a0) ;plane 0>1 copieren
move.w 6(a0),14(a0)
grap.tb
move.l #palette,a3 ;palette copieren
move.w #16-1,d1
grap.pal
move.l (a3)+,60(a3)
dbra d1,grap.pal
grap.nocop
add.w d3,d2 ;aantal bitplanes
cmp.w #8,d2 ;8 bitplanes ?
blt grap.no8planes2
move.w #%10000,d2 ;only bit 4
bra grap.8planes2
grap.no8planes2
lsl.w #8,d2
lsl.w #4,d2
grap.8planes2
or.w #$400,d2 ;dual playfield aan
move.w d2,2(a4) ;bplcon0
movem.l d0-d7/a0-a6,-(sp)
move.l curpic,a2 ;animpic ?
move.l curfrm,d7
cmp.l #0,a2
bne.s grap.noanipic
move.l curpic2,a2 ;normal pic ?
move.l curfrm2,d7
cmp.l #0,a2
beq.s grap.nodplpic
grap.noanipic
add.l d6,a0
add.w d6,d6
bsr.s grappln ;a2,d6,d7,d0
grap.nodplpic
movem.l (sp)+,d0-d7/a0-a6
add.w d6,d6
bra.s grap.nodpla
grap.nodpl ;geen dual playfield
cmp.w #8,d2 ;8 bitplanes ?
blt grap.no8planes
move.w #%10000,d2 ;only bit 4
bra grap.8planes
grap.no8planes
lsl.w #8,d2
lsl.w #4,d2
grap.8planes
move.w d2,2(a4) ;bplcon0
grap.nodpla
move.w d5,30(a1) ;modulo even
moveq.l #0,d3
add.w pic_vew(a2),d3 ;viewmode add
moveq.l #0,d2
move.w 2(a4),d2
or.l d3,d2
ifd gui
tst.b genlck
bne grap.genset
endc
or.l #$100,d2 ;genlock off ($302)
ifd gui
bra grap.gencont
grap.genset
or.l #$102,d2 ;genlock on ($302)
grap.gencont
endc
move.w d2,2(a4)
bsr.s grappln ;a2,d6,d7,d0
grap.end
movem.l (sp)+,d0-d7/a0-a6
rts
;sets on of the 2 possible pictures to the copper
;handles interlace
;d7=framenummer
;d6=copperliststap
;d0=raw planes positie
;a2=current picture
grappln ;planes invullen
movem.l d0-d7/a0-a6,-(sp)
lea pic_raw(a2),a1
move.l a1,d0 ;raw planes
moveq.l #0,d2 ;x*y
move.w pic_wid(a2),d2
lsr.l #1,d2 ;/2
moveq.l #0,d3
move.w pic_hgt(a2),d3
muls d3,d2
move.l d2,d4
add.l d2,d2
move.w pic_dpt(a2),d3
muls d3,d4 ;hele picture size
muls d7,d4 ;frame*size d7 !!!
add.l d4,d4
add.l d4,d0
move.l #vew_wid,d5 ;max x view
move.l hogscr,d4 ;max y view
move.w pic_vew(a2),d1 ;viewmode add
btst #2,d1
beq.s grappln.nolace
add.l d4,d4 ;max y view
grappln.nolace
btst #15,d1 ;hires ?
beq.s grappln.nohi
move.l #vew_wid*2,d5 ;max x view
bra.s grappln.noshi
grappln.nohi
btst #6,d1 ;super hires ?
beq.s grappln.noshi
move.l #vew_wid*4,d5 ;max x view
grappln.noshi
moveq.l #0,d3 ;scherm centreren
move.w pic_wid(a2),d3 ;pic breedte in bytes
cmp.w d5,d3 ;breder dan scherm ?
ble.s grappln.qa
sub.w d5,d3 ;-scherm breedte
lsr.w #2,d3 ;/4
add.l d3,d3
add.l d3,d0
grappln.qa
move.w pic_hgt(a2),d3 ;pic hoogte in bytes
cmp.w d4,d3 ;hoger dan scherm ?
ble.s grappln.qb
sub.w d4,d3 ;-scherm breedte
lsr.w #1,d3 ;/2
moveq.l #0,d5
move.w pic_wid(a2),d5 ;pic breedte in bytes
muls pic_dpt(a2),d5
muls d5,d3
add.l d3,d0
grappln.qb
moveq.l #0,d2
move.w pic_wid(a2),d2
move.w pic_vew(a2),d5 ;interlace flipping ?
btst #2,d5
beq.s grappln.nolac7b
move.w $04(a6),d5 ;even/oneven ?
btst #15,d5
beq.s grappln.nolac7b
moveq.l #0,d3
move.w pic_wid(a2),d3
muls pic_dpt(a2),d3
add.l d3,d0
grappln.nolac7b
move.w pic_dpt(a2),d1 ;plnnummer 1 halen
tst.w d1 ;0 planes ?
beq grappln.end
sub.w #1,d1
grappln.a
move.w d0,3*2(a0)
swap d0
move.w d0,1*2(a0)
swap d0
add.l d6,a0 ;d6=copper step !
add.l d2,d0
dbra d1,grappln.a
cmp.w #8,pic_dpt(a2) ;8 planes ?
bne grappln.noham8
btst #3,pic_vew(a2) ;ham ?
beq grappln.noham8
move.w -14(a0),d0 ;get 6
move.w -10(a0),d1
move.w -6(a0),d2 ;get 7
move.w -2(a0),d3
move.w -18(a0),-2(a0) ;5>7
move.w -22(a0),-6(a0) ;5>7
move.w -26(a0),-10(a0) ;4>6
move.w -30(a0),-14(a0) ;4>6
move.w -34(a0),-18(a0) ;3>5
move.w -38(a0),-22(a0) ;3>5
move.w -42(a0),-26(a0) ;2>4
move.w -46(a0),-30(a0) ;2>4
move.w -50(a0),-34(a0) ;1>3
move.w -54(a0),-38(a0) ;1>3
move.w -58(a0),-42(a0) ;0>2
move.w -62(a0),-46(a0) ;0>2
move.w d0,-62(a0) ;6>0
move.w d1,-58(a0) ;6>0
move.w d2,-54(a0) ;7>1
move.w d3,-50(a0) ;7>1
grappln.noham8
grappln.end
movem.l (sp)+,d0-d7/a0-a6
rts
;sets palettes to palette-buffer
grac
movem.l d0-d7/a0-a6,-(sp)
lea curpal1,a3 ;palette 1
move.l #palette,a1
bsr.s gracfrm
lea curpal2,a3 ;palette 2 (dpl)
move.l #16*4+palette,a1
bsr.s gracfrm
bsr palctr ;palette-buffer to copper
grac.end
movem.l (sp)+,d0-d7/a0-a6
rts
;moves palette from picture to palette-buffer
gracfrm
movem.l d0-d7/a0-a6,-(sp)
tst.l (a3) ;palette aanwezig ?
beq.s gracfrm.end
move.l (a3),a2 ;current palette
cmp.l #'PALE',(a2) ;palette ?
bne.s gracfrm.pict
lea 6(a2),a0 ;palette
move.w 4(a2),d0 ;aantal kleuren
bra.s gracfrm.col
gracfrm.pict
cmp.l #'ANIM',(a2) ;animatie ?
bne.s gracfrm.noanim
moveq.l #0,d1
move.w pic_ani(a2),d1
bclr #7,d1 ;behandelbit weghalen
moveq.l #0,d3
move.w pic_wid(a2),d3
lsr.w #1,d3 ;/2
muls pic_hgt(a2),d3
muls pic_dpt(a2),d3
add.l d3,d3
add.l #pic_raw,d3
move.l d3,d5
btst #0,d1
bne.s gracfrm.buf2
moveq.l #0,d5
gracfrm.buf2
add.l d5,a2
gracfrm.noanim
lea pic_pal(a2),a0 ;palette
move.w pic_palnum(a2),d0
tst.w d0 ;0 planes ?
beq.s gracfrm.end
gracfrm.col
gracfrm.fa
move.l (a0)+,(a1)+
dbra d0,gracfrm.fa
gracfrm.end
movem.l (sp)+,d0-d7/a0-a6
rts
;handles colorcycling in the palette-buffer
palcycctr
movem.l d0-d7/a0-a6,-(sp)
move.l curpic1,a2 ;current raw
cmp.l #0,a2
beq.s palcycctr.qb
lea cycdel1,a3 ;cycle delays
move.l #paltab,a4
bsr palcyc
palcycctr.qb
move.l curpic2,a2 ;current raw
cmp.l #0,a2
beq.s palcycctr.c
lea cycdel2,a3 ;cycle delays
move.l #16*2+paltab,a4
bsr palcyc
palcycctr.c
movem.l (sp)+,d0-d7/a0-a6
rts
;copies palette-buffer to copper
palctr
movem.l d0-d7/a0-a6,-(sp)
lea gracprcol,a1 ;AGA
move.l #palette,a0
move.l #paltab,a2
move.w #8-1,d6
palctr.e
move.w #32-1,d7
palctr.d
move.w (a2)+,d0 ;get cycle-position
move.w (a0,d0),6(a1) ;high RGB bits
move.w 2(a0,d0),((32+1)*4)+6(a1) ;low RGB bits
add.l #4,a1
dbra d7,palctr.d
add.l #((32+2)*4),a1
dbra d6,palctr.e
palctr.end
movem.l (sp)+,d0-d7/a0-a6
rts
;reset palette tabel, for proper color cycling
paltabres
movem.l d0-d7/a0-a6,-(sp)
lea paltab,a0
clr.l d0
move.w #256-1,d1
paltabres.a
move.w d0,(a0)+
add.w #4,d0 ;aga color words, high RGB + low RGB
dbra d1,paltabres.a
paltabres.end
movem.l (sp)+,d0-d7/a0-a6
rts
;colorcyclinghandling of a palette
palcyc
movem.l d0-d7/a0-a6,-(sp)
move.w #4-1,d7 ;4 cycles
palcyc.d
tst.w (a3)+ ;delay klaar ?
bne.s palcyc.c
moveq.l #0,d1
move.b pic_cycstr(a2),d1 ;start color
lsl.b #1,d1 ;*2
moveq.l #0,d2
move.b pic_cycend(a2),d2 ;end color
lsl.b #1,d2 ;*2
moveq.l #0,d3
move.b pic_cycadd(a2),d3 ;richting
move.l a4,a0 ;palette pointer
move.l a0,a1
add.l d1,a0 ;startcolor
add.l d2,a1 ;endcolor
cmp.b #1,d3 ;omhoog
beq.s palcyc.up
cmp.b #3,d3 ;omlaag
beq.s palcyc.down
bra.s palcyc.i
palcyc.up ;kleuren copieren
move.w (a1),d4 ;laatst color bewaren
palcyc.f ;kleuren copieren
cmp.l a0,a1
beq.s palcyc.fa
move.w -(a1),2(a1)
bra.s palcyc.f
palcyc.fa
move.w d4,(a1)
bra.s palcyc.g
palcyc.down
move.w (a0),d4 ;laatst color bewaren
palcyc.h ;kleuren copieren
cmp.l a0,a1
beq.s palcyc.ha
move.w 2(a0),(a0)+
bra.s palcyc.h
palcyc.ha
move.w d4,(a1)
palcyc.g
move.b pic_cycspd(a2),-1(a3) ;delay zetten
bra.s palcyc.i
palcyc.c
sub.w #1,-2(a3) ;cycle delay aftellen
palcyc.i
add.l #4,a2 ;next cycle info
dbra d7,palcyc.d
palcyc.qb
movem.l (sp)+,d0-d7/a0-a6
rts
; SECTION variabelen,DATA_c
cnop 0,2
curtsk dc.l 0
tskpri dc.l 0
duplok dc.l 0
inttel dc.l 0
intdel dc.l 0
form dc.l 0
ifffil dc.l 0
intvbold dc.l 0
inttbeold dc.l 0
patpos dc.l 0
gfxlib dc.l 0
doslib dc.l 0
wbview dc.l 0
mt_data dc.l 0
memvid dc.l 0
oldcprlist dc.l 0
hogscr dc.l vew_hgt
inspos dc.l -1
anispd1 dc.w 1 ;nooit op 0 !
anispd2 dc.w 1
cnop 0,2
varclr.s ;start wissen
oldrot dc.l 0
curpic dc.l 0
curfrm dc.l 0
cycdel1 ds.w 4
cycdel2 ds.w 4
rotinf1 dc.w 0
rotinf2 dc.w 0
effspd dc.w 0
efflop dc.b 0
anilop1 dc.b 0
anilop2 dc.b 0
anipal1 dc.b 0
anipal2 dc.b 0
rotdpl dc.b 1
rottrg dc.b 0
dplctr dc.b 0
cnop 0,2
insdat ds.l 4
inspri dc.l 0
instel dc.w 0
cureff dc.l 0
efftel dc.w 0
curpal1 dc.l 0
curpal2 dc.l 0
currot1 dc.l 0
currot2 dc.l 0
curpic1 dc.l 0
curpic2 dc.l 0
anitel1 dc.w 0
anitel2 dc.w 0
curfrm1 dc.l 0
curfrm2 dc.l 0
oldfrm1 dc.l 0
oldfrm2 dc.l 0
varclr.e
dc.l 0 ;wisruimte
varclr.ql equ varclr.e-varclr.s ;wislengte
ntscmode dc.b 0
end dc.b 0
pronam dc.b 'VideoTracker',0
cnop 0,2
dosnam dc.b 'dos.library',0
cnop 0,4
gfxnam dc.b 'graphics.library',0
cnop 0,4
cnop 0,4
gra.s ;copperlist edit buffer
gracprscr
dc.w $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
gracprbpl
dc.w $100,$0000,$102,$0000,$104,$0020
dc.w $108,$0000,$10a,$0000,$1fc,$0003
gracprpln
dc.w $e0,$0000,$e2,$0000 ;1
dc.w $e4,$0000,$e6,$0000 ;2
dc.w $e8,$0000,$ea,$0000 ;3
dc.w $ec,$0000,$ee,$0000 ;4
dc.w $f0,$0000,$f2,$0000 ;5
dc.w $f4,$0000,$f6,$0000 ;6
dc.w $f8,$0000,$fa,$0000 ;7
dc.w $fc,$0000,$fe,$0000 ;8
gracprcol
dc.w $106,$0000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$0200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$1000
cprjmp
dc.w $080,0,$082,0
gra.e
gra.ql equ gra.e-gra.s ;block lengte
cpr ;real copperlist
dc.w $0001,$fffe
dc.w $09c,$8001 ;tbeint
cprspr
dc.w $120,$0000,$122,$0000
dc.w $124,$0000,$126,$0000
dc.w $128,$0000,$12a,$0000
dc.w $12c,$0000,$12e,$0000
dc.w $130,$0000,$132,$0000
dc.w $134,$0000,$136,$0000
dc.w $138,$0000,$13a,$0000
dc.w $13c,$0000,$13e,$0000
cprbuf
dc.w $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
dc.w $100,$9000,$102,$0000,$104,$0020
dc.w $108,$0000,$10a,$0000,$1fc,$0003
dc.w $e0,$0000,$e2,$0000 ;0
dc.w $e4,$0000,$e6,$0000 ;1
dc.w $e8,$0000,$ea,$0000 ;2
dc.w $ec,$0000,$ee,$0000 ;3
dc.w $f0,$0000,$f2,$0000 ;4
dc.w $f4,$0000,$f6,$0000 ;5
dc.w $f8,$0000,$fa,$0000 ;6
dc.w $fc,$0000,$fe,$0000 ;7
dc.w $106,$0000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$0200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$2200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$4200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$6200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$8200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$a200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$c200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e000
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$e200
dc.w $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
dc.w $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
dc.w $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
dc.w $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
dc.w $106,$1000
dc.w $080,0,$082,0
cprbuf.e
dc.w $088,$0000 ;copjmp2
dc.w $080,0,$082,0 ;moet achter cprbck blijven !
cprbck
sprdat
dc.w $ffff,$fffe
palette ds.l 256 ;palette 24-bits, far out !
paltab ds.w 256 ;palette cycle-tabel
cnop 0,2
var ds.b $300 ;variabelen voor routines
endc
; this is the routine-source
;**********************************************************************
rot_vew equ 0 ;$8004 <- nog niet goed !
rot_dpt equ 3
ifeq rot_vew-0
ifd ocs
rot_wid equ 44
rot_cenx equ 0
endc
ifnd ocs
rot_wid equ 48
rot_cenx equ 4*8
endc
rot_hgt equ 290
rot_ceny equ 6
rot_siz equ -150
endc
ifeq rot_vew-$8004
ifd ocs
rot_wid equ 44*2
rot_cenx equ 4*8
endc
ifnd ocs
rot_wid equ 48*2
rot_cenx equ 0
endc
rot_hgt equ 290*2
rot_ceny equ 5
rot_siz equ -100
endc
SECTION 10,CODE
cnop 0,8
rot
rotp
ifd ocs
dc.l 'ROTO'
endc
ifnd ocs
dc.l 'ROTA'
endc
ProgStart:
movem.l d2-d7/a1-a6,-(sp)
lea rot,a3 ;program-base
ifd rout
move.l #rotc,a2
endc
move.l a2,rotchp-rot(a3)
move.l d0,d1
divs #128,d1
and.l #$ffff,d1
move.l d1,d7 ;
muls #128,d1
sub.l d1,d0
move.l d0,d1
divs #64,d1
and.l #$ffff,d1
move.l d1,rotmod-rot(a3) ;mode
muls #64,d1
sub.l d1,d0
move.l d0,d1
divs #16,d1
and.l #$ffff,d1
move.l d1,d7 ;view size
lsl.l #1,d7 ;*2
lea rotsiztab,a1
move.w (a1,d7),Dif-rot(a3)
muls #16,d1
sub.l d1,d0
move.l d0,rotsintabpos-rot(a3) ;beweeg vorm
tst.l var_lnd(a0) ;is er een landfile ?
beq rot.return
move.l var_lnd(a0),a0 ;landscape data
cmp.l #'LAND',(a0) ;still active ?
bne rot.return
move.l lnd_sizx(a0),sizx-rot(a3)
move.l lnd_sizy(a0),sizy-rot(a3)
move.l lnd_sizx(a0),d0 ;bereken DifW
move.l #128,d1
clr.l d2
move.w Dif-rot(a3),d2
divs d2,d1
sub.w d1,d0
move.l d0,DifW-rot(a3)
lea lnd_wrl(a0),a0
move.l a0,d0
move.l d0,World-rot(a3)
; tst.l Ytable-rot(a3) ;al gedaan ?
; bne rot.done
lea rotytab,a0
move.l a0,d0
move.l d0,Ytable-rot(a3)
lea rotyadr,a0
move.l a0,d0
move.l d0,YTabAdr-rot(a3)
add.l #4*rot_dpt,d0
move.l d0,YTabAdrEnd-rot(a3)
lea rotdata,a0
move.l a0,d0
move.l d0,World_Data-rot(a3)
move.l rotchp-rot(a3),a1
add.l #rotraw1-rotc,a1
add.l rotbuf-rot(a3),a1
move.l Ytable-rot(a3),a6
move.l YTabAdr-rot(a3),a5
move.w #rot_dpt-1,d1 ;depth-1
PInit_1:
move.l a6,(a5)+
move.l a1,a0 ;bitplane halen
add.l #rot_wid,a1
move.l #rot_hgt-1,d0 ;heigth-1
PInit_2:
move.l a0,(a6)+
add.l #rot_dpt*rot_wid,a0
dbra d0,PInit_2
dbra d1,PInit_1
rot.done
LoadLand: ;load landscape
StartHere: ;landscape groot laten zien
rotlop
bsr.s Hoofd3D
rot.return
move.l rotchp-rot(a3),a0
add.l #rotpic1-rotc,a0 ;picture
add.l rotbuf-rot(a3),a0
eor.l #rotpic2-rotpic1,rotbuf-rot(a3)
move.l #0,d1 ;copper
movem.l (sp)+,d2-d7/a1-a6
rts
Hoofd3D: ;landscape 3d laten zien
move.l Ytable-rot(a3),a6
; move.l Ytable(pc),a6
; add.l YTabNr(pc),a6
bsr ScreenClear ;scherm wissen
move.l World-rot(a3),a5
lea rotsintab,a1 ;sinus add tabel
move.l rotsintabpos-rot(a3),d0
lsl.l #3,d0 ;*8
add.l d0,a1
lea rotsin,a0 ;sinus data
move.l rotsinx-rot(a3),d0 ;sinus x pos
clr.l d2
move.w (a0,d0),d2
; move.l sizx-rot(a3),d3 ;totale breedte
move.l DifW-rot(a3),d3 ;- x module
muls d3,d2 ;maal goede breedte
divs #256,d2 ;delen
move.w d2,2+AbsX-rot(a3) ;set absx
move.l rotsiny-rot(a3),d1 ;sinus y pos
clr.l d2
move.w (a0,d1),d2
; move.l sizy-rot(a3),d3 ;totale breedte
move.l DifW-rot(a3),d3 ;- x module
muls d3,d2 ;maal goede breedte
divs #256,d2 ;delen
move.w d2,2+AbsY-rot(a3) ;set ansy
move.l rotsinx-rot(a3),d0 ;change x pos
add.l (a1),d0
cmp.l #((((rotsin.e-rotsin)/8)*2)*4),d0
blt.s rot.ga
sub.l #((((rotsin.e-rotsin)/8)*2)*4),d0
rot.ga
move.l d0,rotsinx-rot(a3)
move.l rotsiny-rot(a3),d1 ;change y pos
add.l 4(a1),d1
cmp.l #((((rotsin.e-rotsin)/8)*2)*4),d1
blt.s rot.gb
sub.l #((((rotsin.e-rotsin)/8)*2)*4),d1
rot.gb
move.l d1,rotsiny-rot(a3)
move.l AbsX-rot(a3),d0 ;x,y view positie
muls (sizx+2)-rot(a3),d0
add.l d0,a5
move.l AbsY-rot(a3),d0
add.l d0,a5
move.l rotmod-rot(a3),d0 ;mode halen
tst.b d0
beq.s rotpix ;pixels ?
cmp.b #1,d0
beq rotlin ;lijntjes ?
rts
rotpix ;pixels
move.w #-64,X-rot(a3) ; -64
rotpix_LoopX:
move.w #64,Y-rot(a3)
move.l World_Data-rot(a3),a4
rotpix_LoopY:
move.w X-rot(a3),d0
move.w Y-rot(a3),d2
clr.w d1
move.b (a5)+,d1 ;z-waarde halen
lsr.b #1,d1 ;/2
ifge rot_dpt-2
move.b d1,d7
lsr.b #7-rot_dpt,d7 ;kleur
beq.s rotpixcol.da ;overslaan ?
endc
moveq.w #0,d3
move.w Hoogte-rot(a3),d4
move.w #rot_siz,d5 ; -120 -150
sub.w d5,d2
tst.w d2
beq.s rotCentProjEnd
sub.w d3,d0
sub.w d4,d1
muls d5,d0
muls d5,d1
divs d2,d0
divs d2,d1
sub.w d0,d3
sub.w d1,d4
move.w d3,d0
move.w d4,d1
neg.w d1
rotCentProjEnd:
add.w #rot_wid*4+rot_cenx,d0 ;centreer x1,y1
add.w #(rot_hgt*rot_ceny)/10,d1
ifeq rot_dpt-1 ;no-colorversion
move.w d1,d6 ;y-pos
lsl.w #2,d6 ;*4
move.l (a6,d6),a1 ;y regel halen
move.w d0,d6 ;x-pos
lsr.w #3,d6 ;/8
and.w #7,d0
eor.b #7,d0
bset d0,(a1,d6)
endc
ifge rot_dpt-2 ;color version
move.w d1,d6 ;y-pos
lsl.w #2,d6 ;*4
move.l (a6,d6),a1 ;y regel halen
move.w d0,d6 ;x-pos
lsr.w #3,d6 ;/8
and.w #7,d0
eor.b #7,d0
ifeq rot_dpt-2 ;color version 4
btst #1,d7 ;kleur
beq.s rotpixcol.ca
bset d0,(a1,d6)
rotpixcol.ca
btst #0,d7 ;kleur
beq.s rotpixcol.cb
bset d0,rot_wid(a1,d6)
rotpixcol.cb
endc
ifeq rot_dpt-3 ;color version 8
btst #2,d7 ;kleur
beq.s rotpixcol.ca
bset d0,(a1,d6)
rotpixcol.ca
btst #0,d7 ;kleur
beq.s rotpixcol.cb
bset d0,rot_wid(a1,d6)
rotpixcol.cb
btst #1,d7 ;kleur
beq.s rotpixcol.cc
bset d0,2*rot_wid(a1,d6)
rotpixcol.cc
endc
ifeq rot_dpt-5 ;color big version
add.l #rot_wid*2,a1
btst #4,d7 ;kleur
beq.s rotpixcol.ca
bset d0,-2*rot_wid(a1,d6)
rotpixcol.ca
btst #0,d7 ;kleur
beq.s rotpixcol.cb
bset d0,-1*rot_wid(a1,d6)
rotpixcol.cb
btst #1,d7 ;kleur
beq.s rotpixcol.cc
bset d0,(a1,d6)
rotpixcol.cc
btst #2,d7 ;kleur
beq.s rotpixcol.cd
bset d0,1*rot_wid(a1,d6)
rotpixcol.cd
btst #3,d7 ;kleur
beq.s rotpixcol.ce
bset d0,2*rot_wid(a1,d6)
rotpixcol.ce
endc
rotpixcol.da
endc
clr.l d0
move.w Dif-rot(a3),d0 ;stap naar volgende scherm positie
sub.w d0,Y-rot(a3)
cmp.w #-64,Y-rot(a3) ;laatste y punt ?
bne rotpix_LoopY
add.w d0,X-rot(a3)
add.l DifW-rot(a3),a5 ;stap naar volgend kaart-regel
cmp.w #64,X-rot(a3) ;laatste x punt ?
bne rotpix_LoopX
rts
rotlin ;lijntjes
move.w #-64,X-rot(a3) ; -64
rotlin_LoopX:
move.w #64,Y-rot(a3)
move.l World_Data-rot(a3),a4
rotlin_LoopY:
move.w X-rot(a3),d0
move.w Y-rot(a3),d2
clr.w d1
move.b (a5)+,d1 ;z-waarde halen
lsr.b #1,d1 ;/2
bsr CentralProj
add.w #rot_wid*4+rot_cenx,d0 ;centreer x1,y1
add.w #(rot_hgt*rot_ceny)/10,d1
move.w OldX-rot(a3),d2 ;x2,y2
move.w OldY-rot(a3),d3
move.w d0,OldX-rot(a3)
move.w d1,OldY-rot(a3)
cmp.w #64,Y-rot(a3) ;eerste y punt = overslaan
beq.s rotlin_Go_on
bsr Drawline ;lijn tekenen
rotlin_Go_on:
move.w (a4),d0
move.w 2(a4),d1
move.w OldX-rot(a3),d2
move.w OldY-rot(a3),d3
move.w d2,(a4)+
move.w d3,(a4)+
cmp.w #-64,X-rot(a3) ;eerste x punt = overslaan
beq.s rotlin_Go_On2
bsr Drawline
rotlin_Go_On2:
clr.l d0
move.w Dif-rot(a3),d0 ;stap naar volgende scherm positie
sub.w d0,Y-rot(a3)
cmp.w #-64,Y-rot(a3) ;laatste y punt ?
bne rotlin_LoopY
add.w d0,X-rot(a3)
add.l DifW-rot(a3),a5 ;stap naar volgend kaart-regel
cmp.w #64,X-rot(a3) ;laatste x punt ?
bne rotlin_LoopX
bsr.s blitwait
rts
; move.b $BFEC01,d0 ;read keyboard
; ror.b #1,d0
; cmp.b #$AF,d0 ; F1
; bne.s F2
; move.w #4,Dif
; move.l #224,DifW
;F2:
; cmp.b #$AE,d0 ; F2
; bne.s F3
; move.w #8,Dif
; move.l #240,DifW
;F3:
; cmp.b #$AD,d0 ; F3
; bne.s F4
; move.w #16,Dif
; move.l #248,DifW
;F4:
; cmp.b #$AC,d0 ; F4
; bne.s ESC
; move.w #32,Dif
; move.l #252,DifW
;ESC:
; cmp.b #$BA,d0 ; Esc
; bne.s Skey
; move.l #0,d0
; rts
;
;Skey:
; cmp.b #$DE,d0 ; 'S'
; bne.s F8
; move.l #2,d0
;F8:
; cmp.b #$A8,d0 ; F8
; bne.s F10
; move.w OldToeval(pc),Toeval
; move.w #1,d0
; rts
;F10:
; cmp.b #$A6,d0 ; F10
; bne.s T1_5
; move.w Teller(pc),Toeval
; move.w Toeval(pc),OldToeval
; move.l #1,d0
; rts
;T1_5:
; cmp.b #$FE,d0 ; 1,2,3,4,5
; bhi.s F9
; cmp.b #$F9,d0
; bls.s F9
; sub.b #$FA,d0
; move.b d0,Size
;F9:
; cmp.b #$A7,d0
; bne Loop3d_1
; move.l #1,d0
; move.w Toeval(pc),OldToeval
; rts
BlitClear:
move.l (a6),$DFF050 ;blit clear
move.l (a6),$DFF054
move.l #(rot_dpt-1)*rot_wid,$DFF064
move.w #$900,$DFF040
move.w #0,$DFF042
move.w #(rot_hgt*64)+(rot_wid/2),$DFF058
bsr.s blitwait
rts
blitwait:
btst #6,($DFF002).l ;blt wait
bne.s blitwait
rts
ScreenClear: ;clear screen
move.l YTabAdr-rot(a3),a0
move.w #rot_dpt-1,d0
LPos:
move.l (a0)+,a6
bsr.s BlitClear
dbra d0,LPos
rts
Verschil:
sub.l d2,d0
bsr.s SubM
neg.l d0
bsr.s SubM
neg.l d0
rts
SubM:
cmp.l #$7F,d0
ble.s Kleiner
move.l #$FF,d2
sub.l d2,d0
Kleiner:
rts
CentralProj:
move.w #0,d3
move.w Hoogte-rot(a3),d4
move.w #rot_siz,d5 ; -120 -150
sub.w d5,d2
tst.w d2
beq.s CentProjEnd
sub.w d3,d0
sub.w d4,d1
muls d5,d0
muls d5,d1
divs d2,d0
divs d2,d1
sub.w d0,d3
sub.w d1,d4
move.w d3,d0
move.w d4,d1
neg.w d1
CentProjEnd:
rts
Drawline:
cmp.w d0,d2
bne.s WDraw1
cmp.w d1,d3
bne.s WDraw1
rts
WDraw1:
tst.w d1
bmi.s Clipping
tst.w d3
bmi.s Clipping1
bra.s WDraw
Clipping:
tst.w d3
bpl.s Clipping1
rts
Clipping1:
move.w d0,d4
sub.w d2,d4
move.w d3,d5
muls d5,d4
sub.w d1,d5
divs d5,d4
add.w d2,d4
tst.w d1
bmi.s PKt1
move.w d4,d2
clr.w d3
bra.s Drawline
PKt1:
move.w d4,d0
clr.w d1
bra.s Drawline
WDraw:
move.w #rot_dpt*rot_wid,a1
clr.l d6
move.w d1,d6
lsl.w #2,d6
move.l 0(a6,d6.l),d4
moveq #-$10,d5
and.w d0,d5
lsr.w #3,d5
add.w d5,d4
clr.l d5
sub.w d1,d3
roxl.b #1,d5
tst.w d3
bge.s GrY
neg.w d3
GrY:
sub.w d0,d2
roxl.b #1,d5
tst.w d2
bge.s GrX
neg.w d2
GrX:
move.w d3,d1
sub.w d2,d1
bge.s Gd
exg d2,d3
Gd:
roxl.b #1,d5
move.b OktTab(pc,d5.l),d5
add.w d2,d2
move.l a5,-(sp)
move.l #$dff000,a5
WBlit:
btst #6,$002(a5)
bne.s WBlit
move.w d2,$062(a5)
sub.w d3,d2
bge.s Voorz
or.b #$40,d5
Voorz:
move.w d2,$052(a5)
sub.w d3,d2
move.w d2,$064(a5)
move.w #$8000,$074(a5)
move.w #$FFFF,$072(a5)
move.w #$FFFF,$044(a5)
and.w #15,d0
ror.w #4,d0
or.w #$BCA,d0
move.w d0,$040(a5)
move.w d5,$042(a5)
move.l d4,$048(a5)
move.l d4,$054(a5)
move.w a1,$060(a5)
move.w a1,$066(a5)
lsl.w #6,d3
addq.w #2,d3
move.w d3,$058(a5)
move.l (sp)+,a5
rts
OktTab:
dc.w $111,$915,$519,$D1D
rotchp dc.l 0
X: dc.w 0
Y: dc.w 0
OldX: dc.w 0
OldY: dc.w 0
World_Data: dc.l 0
AbsX: dc.l 0
AbsY: dc.l 0
Hoogte: dc.w 119 ;-49 tot 119
sizx dc.l 0
sizy dc.l 0
Ytable: dc.l 0
YTabAdr: dc.l 0
YTabAdrEnd: dc.l 0
YTabNr: dc.l 0
World: dc.l 0
Dif: dc.w 8 ;4 ;8 scherm stap
DifW: dc.l 242 ;226 ;242 kaart-regel module stap
rotbuf dc.l 0
rotsinx dc.l 0
rotsiny dc.l (((rotsin.e-rotsin)/8)*2)
rotsintabpos dc.l 0
rotmod dc.l 0
; Dif Difw
rotsiztab
dc.w 16,8,4,2
; xadd yadd
rotsintab
dc.l 4*2, 4*2
dc.l 2*2, 4*2
dc.l 4*2, 6*2
rept 16-3
dc.l 2*2, 2*2
endr
rotsin
dc.w 128,129,130,131,132,134,135,136,137,138,139,140
dc.w 141,142,143,145,146,147,148,149,150,151,152,153
dc.w 154,155,157,158,159,160,161,162,163,164,165,166
dc.w 167,168,169,170,171,172,174,175,176,177,178,179
dc.w 180,181,182,183,184,185,186,187,188,189,190,191
dc.w 192,192,193,194,195,196,197,198,199,200,201,202
dc.w 203,204,204,205,206,207,208,209,210,210,211,212
dc.w 213,214,215,215,216,217,218,219,219,220,221,222
dc.w 222,223,224,225,225,226,227,227,228,229,229,230
dc.w 231,231,232,233,233,234,235,235,236,236,237,237
dc.w 238,239,239,240,240,241,241,242,242,243,243,244
dc.w 244,244,245,245,246,246,247,247,247,248,248,248
dc.w 249,249,249,250,250,250,251,251,251,251,252,252
dc.w 252,252,253,253,253,253,253,254,254,254,254,254
dc.w 254,254,255,255,255,255,255,255,255,255,255,255
dc.w 255,255,255,255,255,255,255,255,255,255,255,254
dc.w 254,254,254,254,254,254,253,253,253,253,253,252
dc.w 252,252,252,251,251,251,251,250,250,250,249,249
dc.w 249,248,248,248,247,247,247,246,246,245,245,244
dc.w 244,244,243,243,242,242,241,241,240,240,239,239
dc.w 238,237,237,236,236,235,235,234,233,233,232,231
dc.w 231,230,229,229,228,227,227,226,225,225,224,223
dc.w 222,222,221,220,219,219,218,217,216,215,215,214
dc.w 213,212,211,210,210,209,208,207,206,205,204,204
dc.w 203,202,201,200,199,198,197,196,195,194,193,192
dc.w 192,191,190,189,188,187,186,185,184,183,182,181
dc.w 180,179,178,177,176,175,174,172,171,170,169,168
dc.w 167,166,165,164,163,162,161,160,159,158,157,155
dc.w 154,153,152,151,150,149,148,147,146,145,143,142
dc.w 141,140,139,138,137,136,135,134,132,131,130,129
dc.w 128,127,126,125,124,122,121,120,119,118,117,116
dc.w 115,114,113,111,110,109,108,107,106,105,104,103
dc.w 102,101,99,98,97,96,95,94,93,92,91,90
dc.w 89,88,87,86,85,84,82,81,80,79,78,77
dc.w 76,75,74,73,72,71,70,69,68,67,66,65
dc.w 65,64,63,62,61,60,59,58,57,56,55,54
dc.w 53,52,52,51,50,49,48,47,46,46,45,44
dc.w 43,42,41,41,40,39,38,37,37,36,35,34
dc.w 34,33,32,31,31,30,29,29,28,27,27,26
dc.w 25,25,24,23,23,22,21,21,20,20,19,19
dc.w 18,17,17,16,16,15,15,14,14,13,13,12
dc.w 12,12,11,11,10,10,9,9,9,8,8,8
dc.w 7,7,7,6,6,6,5,5,5,5,4,4
dc.w 4,4,3,3,3,3,3,2,2,2,2,2
dc.w 2,2,1,1,1,1,1,1,1,1,1,1
dc.w 1,1,1,1,1,1,1,1,1,1,1,2
dc.w 2,2,2,2,2,2,3,3,3,3,3,4
dc.w 4,4,4,5,5,5,5,6,6,6,7,7
dc.w 7,8,8,8,9,9,9,10,10,11,11,12
dc.w 12,12,13,13,14,14,15,15,16,16,17,17
dc.w 18,19,19,20,20,21,21,22,23,23,24,25
dc.w 25,26,27,27,28,29,29,30,31,31,32,33
dc.w 34,34,35,36,37,37,38,39,40,41,41,42
dc.w 43,44,45,46,46,47,48,49,50,51,52,52
dc.w 53,54,55,56,57,58,59,60,61,62,63,64
dc.w 64,65,66,67,68,69,70,71,72,73,74,75
dc.w 76,77,78,79,80,81,82,84,85,86,87,88
dc.w 89,90,91,92,93,94,95,96,97,98,99,101
dc.w 102,103,104,105,106,107,108,109,110,111,113,114
dc.w 115,116,117,118,119,120,121,122,124,125,126,127
dc.w 128
rotsin.e
rotyadr ds.l rot_dpt ;plane offsets
rotytab ds.l rot_dpt*rot_hgt ;plane y offsets
rotdata ds.w 64 ;words
;pic_wid equ 4 ;wide in bytes
;pic_hgt equ 6 ;hoogte
;pic_dpt equ 8 ;number planes
;pic_ani equ 10 ;aantal effes (anim)
;pic_vew equ 12 ;viewmode
;pic_cycstr equ 14 ;cycle start (*4)
;pic_cycend equ 15 ;cycle end (*4)
;pic_cycspd equ 16 ;cycle speed (*4)
;pic_cycadd equ 17 ;cycle add (*4)
;pic_palnum equ 30 ;aantal kleuren
;pic_pal equ 32 ;palette start
;pic_palsiz equ 256*2 ;vaste palette size
;pic_raw equ pic_pal+pic_palsiz ;palette start
rotp.e
SECTION 11,CODE_C
cnop 0,8
rotc
ifd ocs
dc.l 'ROTO'
endc
ifnd ocs
dc.l 'ROTA'
endc
rts
cnop 0,8
rotpic1
dc.l 'PICT'
dc.w rot_wid,rot_hgt,rot_dpt,1,rot_vew
ifd ocs
ds.b 4*4
endc
ifnd ocs
ds.b 8*4+16
endc
ifeq rot_dpt-1
dc.w 2-1
ifd ocs
dc.w $000,$FFF
ds.w 256-2
endc
ifnd ocs
dc.w $000,0,$FFF,0
ds.l 256-2
endc
endc
ifeq rot_dpt-2
dc.w 4-1
ifd ocs
dc.w $000,$0f0,$c70,$777
ds.w 256-4
endc
ifnd ocs
dc.w $000,0,$0f0,0,$c70,0,$777,0
ds.l 256-4
endc
endc
ifeq rot_dpt-3
dc.w 8-1
ifd ocs
dc.w $000,$050,$0a0,$0f0
dc.w $c70,$c70,$777,$777
ds.w 256-8
endc
ifnd ocs
dc.w $000,0,$050,0,$0a0,0,$0f0,0
dc.w $c70,0,$c70,0,$777,0,$777,0
ds.l 256-8
endc
endc
ifeq rot_dpt-5
dc.w 32-1
ifd ocs
dc.w $000,$050,$060,$070,$080,$090,$0a0,$0b0
dc.w $0c0,$0d0,$0f0,$2e0,$4b0,$690,$880,$a70
dc.w $c70,$c70,$c70,$c70,$d80,$d80,$d80,$d80
dc.w $c71,$b62,$a63,$964,$866,$777,$777,$777
ds.w 256-32
endc
ifnd ocs
dc.w $000,0,$050,0,$060,0,$070,0,$080,0,$090,0,$0a0,0,$0b0,0
dc.w $0c0,0,$0d0,0,$0f0,0,$2e0,0,$4b0,0,$690,0,$880,0,$a70,0
dc.w $c70,0,$c70,0,$c70,0,$c70,0,$d80,0,$d80,0,$d80,0,$d80,0
dc.w $c71,0,$b62,0,$a63,0,$964,0,$866,0,$777,0,$777,0,$777,0
ds.l 256-32
endc
endc
rotraw1
ds.b rot_wid*rot_hgt*rot_dpt
cnop 0,8
rotpic2
dc.l 'PICT'
dc.w rot_wid,rot_hgt,rot_dpt,1,rot_vew
ifd ocs
ds.b 4*4
endc
ifnd ocs
ds.b 8*4+16
endc
ifeq rot_dpt-1
dc.w 2-1
ifd ocs
dc.w $000,$FFF
ds.w 256-2
endc
ifnd ocs
dc.w $000,0,$FFF,0
ds.l 256-2
endc
endc
ifeq rot_dpt-2
dc.w 4-1
ifd ocs
dc.w $000,$0f0,$c70,$777
ds.w 256-4
endc
ifnd ocs
dc.w $000,0,$0f0,0,$c70,0,$777,0
ds.l 256-4
endc
endc
ifeq rot_dpt-3
dc.w 8-1
ifd ocs
dc.w $000,$050,$0a0,$0f0
dc.w $c70,$c70,$777,$777
ds.w 256-8
endc
ifnd ocs
dc.w $000,0,$050,0,$0a0,0,$0f0,0
dc.w $c70,0,$c70,0,$777,0,$777,0
ds.l 256-8
endc
endc
ifeq rot_dpt-5
dc.w 32-1
ifd ocs
dc.w $000,$050,$060,$070,$080,$090,$0a0,$0b0
dc.w $0c0,$0d0,$0f0,$2e0,$4b0,$690,$880,$a70
dc.w $c70,$c70,$c70,$c70,$d80,$d80,$d80,$d80
dc.w $c71,$b62,$a63,$964,$866,$777,$777,$777
ds.w 256-32
endc
ifnd ocs
dc.w $000,0,$050,0,$060,0,$070,0,$080,0,$090,0,$0a0,0,$0b0,0
dc.w $0c0,0,$0d0,0,$0f0,0,$2e0,0,$4b0,0,$690,0,$880,0,$a70,0
dc.w $c70,0,$c70,0,$c70,0,$c70,0,$d80,0,$d80,0,$d80,0,$d80,0
dc.w $c71,0,$b62,0,$a63,0,$964,0,$866,0,$777,0,$777,0,$777,0
ds.l 256-32
endc
endc
rotraw2
ds.b rot_wid*rot_hgt*rot_dpt
rotc.e
rot.e
;**********************************************************************
;and here are the incbin-files....
ifd rout
cnop 0,8
rotinc
incbin 'w:effectaga/iff.scape'
endc